API Authentication এবং Token Based Security ওয়েব অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনগুলির মধ্যে নিরাপদ ডেটা আদান-প্রদান এবং ব্যবহারকারী যাচাই করার জন্য অত্যন্ত গুরুত্বপূর্ণ। CodeIgniter ফ্রেমওয়ার্কে API Authentication এবং Token-based Security বাস্তবায়নের জন্য সাধারণত JWT (JSON Web Token) বা OAuth পদ্ধতি ব্যবহৃত হয়।
এই গাইডে, আমরা JWT ব্যবহার করে API Authentication এবং Token Based Security কিভাবে CodeIgniter-এ বাস্তবায়ন করা যায়, তা ব্যাখ্যা করবো।
JWT (JSON Web Token) হল একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা একটি টোকেন হিসেবে JSON অবজেক্টের মধ্যে তথ্য সংরক্ষণ করে। এটি নিরাপদভাবে একাধিক সিস্টেমের মধ্যে তথ্য আদান-প্রদান করতে ব্যবহৃত হয়। JWT একটি header, payload, এবং signature দ্বারা গঠিত।
CodeIgniter এ JWT authentication বাস্তবায়নের জন্য একটি JWT লাইব্রেরি ইনস্টল করতে হবে। এটি ব্যবহার করার জন্য একটি third-party library বা composer ব্যবহার করা যেতে পারে।
যদি Composer ব্যবহার করেন, তাহলে আপনার প্রজেক্টের ডিরেক্টরিতে কমান্ড চালান:
composer require firebase/php-jwt
যদি Composer ব্যবহার না করেন, তাহলে firebase/php-jwt লাইব্রেরিটি GitHub থেকে ডাউনলোড করে application/libraries
ফোল্ডারে রাখুন।
যদি আপনি manual ইনস্টলেশন করেন, তবে JWT.php ক্লাস লোড করতে হবে:
require_once(APPPATH.'libraries/JWT.php');
এখন আমরা Authentication Controller তৈরি করবো, যা লগইন করলে JWT টোকেন তৈরি করবে এবং API রিকোয়েস্টে ওই টোকেন যাচাই করবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use \Firebase\JWT\JWT;
class Auth extends CI_Controller {
private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি
public function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->load->model('User_model');
}
// লগইন এবং JWT টোকেন রিটার্ন
public function login() {
$username = $this->input->post('username');
$password = $this->input->post('password');
$user = $this->User_model->get_user_by_credentials($username, $password);
if ($user) {
// JWT টোকেন তৈরি
$payload = array(
"iat" => time(),
"exp" => time() + 3600, // 1 ঘণ্টার জন্য টোকেন বৈধ
"user_id" => $user->id
);
$jwt = JWT::encode($payload, $this->secret_key);
// সফল লগইনের পরে JWT টোকেন রিটার্ন
echo json_encode(array('status' => 'success', 'token' => $jwt));
} else {
// ইউজার পাওয়া না গেলে
echo json_encode(array('status' => 'error', 'message' => 'Invalid credentials'));
}
}
}
এখন API রিকোয়েস্টে JWT টোকেন যাচাই করার জন্য একটি মেথড তৈরি করা হবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use \Firebase\JWT\JWT;
class Api extends CI_Controller {
private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি
public function __construct() {
parent::__construct();
}
// Token যাচাই
public function authenticate() {
$token = $this->input->get_request_header('Authorization'); // Authorization হেডার থেকে টোকেন পাওয়া
if ($token) {
try {
// JWT টোকেন ডিকোড করা
$decoded = JWT::decode($token, $this->secret_key);
$user_id = $decoded->user_id; // টোকেন থেকে ইউজার আইডি পাওয়া
// সফলভাবে যাচাই হলে, ডেটা রিটার্ন
echo json_encode(array('status' => 'success', 'user_id' => $user_id));
} catch (Exception $e) {
// যদি টোকেন অবৈধ হয়
echo json_encode(array('status' => 'error', 'message' => 'Invalid token'));
}
} else {
echo json_encode(array('status' => 'error', 'message' => 'Token not provided'));
}
}
}
এখন আমরা AJAX কলের মাধ্যমে JWT টোকেন ব্যবহার করে ডেটা পাঠাবো।
$.ajax({
url: 'http://example.com/api/authenticate', // API URL
type: 'GET',
headers: {
'Authorization': 'Bearer ' + token // JWT টোকেন
},
success: function(response) {
console.log(response);
},
error: function() {
console.log('Invalid token');
}
});
CodeIgniter-এ API Authentication এবং Token-Based Security বাস্তবায়নের জন্য JWT (JSON Web Token) অত্যন্ত কার্যকরী পদ্ধতি। এটি নিরাপদ এবং কার্যকরী ডেটা আদান-প্রদান নিশ্চিত করে, যেখানে সার্ভার সাইডে শুধুমাত্র একটি সিক্রেট কিপর্যন্ত ব্যবহারকারী যাচাই করা হয়। JWT ব্যবহার করলে, আপনার API গুলি নিরাপদ এবং স্কেলেবল হবে।